import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase Pinguino representa el personaje principal del juego
 * 
 * @author Guadalupe Mtz. Rangel
 * @version 29 de abril de 2012
 */
public class Penguin extends Actor
{
  
    private int x;  //coordenada x inicial 
    private int y;  //coordenada y inicial
    /**
     * Constructor para la clase pinguino
     */
    public Penguin()
    {
        GreenfootImage penguin= new GreenfootImage("p.png");
        penguin.scale(70,50);
        setImage(penguin);
        x=300;
        y=350;
    }
    
    /**
     * Act - do whatever the Penguin wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        Escenario mundo;
        mundo=(Escenario)getWorld();
        if(mundo.nivel()==0||mundo.nivel()==1)
        {
            mover();
            comer();
            chocar();
        }
        if(mundo.nivel()==2)
        {
            mover();
            desplazar();
            comer();
            chocar();
            caer();
        }
    }    
    
    /**
     * Mueve al pinguino hacia la izquierda o hacia la derecha
     */
    public void mover()
    {
        Escenario mundo=(Escenario)getWorld();
        GreenfootImage img;
        img=getImage();
   
        int ancho;  //ancho de la imagen
        int alto;   //alto de la imagen
        int xa;     //x del actor 
        int ya;     //y del actor
        ancho=mundo.getWidth();     
        alto=mundo.getHeight();
        xa=img.getWidth()/2;
        ya=img.getHeight()/2;
        
        if(getX()>=xa+50)
        {
            if(Greenfoot.isKeyDown("left"))
            setLocation(x=x-5,y);
        }
        if(getX()+xa+50<=ancho)
        {
             if(Greenfoot.isKeyDown("right"))
             setLocation(x=x+5,y);
        }
    }   
     

     
   /**
    * Identifica el momento en que el pinguino intersecta con un pescado
   */
   public void comer()
   {
        Comida fish;
        fish=(Comida)getOneObjectAtOffset(20,20,Comida.class);
        
        if(fish!=null)
        {
           Escenario mundo;
           mundo=(Escenario)getWorld();
           mundo.actualizaPuntos(fish.regresaP());
           Greenfoot.playSound("eating.wav");
           mundo.removeObject(fish);
        }
        
        
   }
   
   /**
    * Identifica el momento en que el actor choca con un pinguino 
    */
  public void chocar()
  {
      Obstaculo cubo;
      cubo=(Obstaculo)getOneObjectAtOffset(20,20,Obstaculo.class);
      if(cubo!=null)
      {
          Escenario mundo;
          mundo=(Escenario)super.getWorld();
          Greenfoot.playSound("golpe.mp3");
          mundo.disminuyeVida();
          mundo.removeObject(cubo);
      }
  }
 
  /**
   * Desplaza al pinguino hacia arriba
   */
  public void desplazar()
  {
        Escenario mundo=(Escenario)getWorld();
        GreenfootImage img;
        img=getImage();
    
        int ancho;  //ancho de la imagen
        int alto;   //alto de la imagen
        int xa;     //x del actor 
        int ya;     //y del actor
     
        xa=img.getWidth()/2;
        ya=img.getHeight()/2;
        
       
         if(getY()>150+ya)
         {
            if(Greenfoot.isKeyDown("up"))
            setLocation(x,y=y-5);
         }
         
         if(getY()>150+ya&&getY()<400+ya+30)
         {
           if(Greenfoot.isKeyDown("down"))
            setLocation(x,y=y+5);
         }
        
  }
  
   /**
   * Identifica el momento en que el pinguino cae a un hoyo y disminuye dos vidas
   */
  public void caer()
  {
      Hoyo hoyo;
      hoyo=(Hoyo)getOneObjectAtOffset(20,20,Hoyo.class);
      if(hoyo!=null)
      {
          Escenario mundo;
          mundo=(Escenario)super.getWorld();
          mundo.disminuyeVida();
          mundo.disminuyeVida();
          mundo.removeObject(hoyo);
      }
   }
}
